/*
  引用计数算法
    核心思想：设置引用数，判断当前引用数是否为0

    引用计数器，引用关系改变时修改引用数字，引用数字为0时立即回收

    优点：
      1. 发现垃圾时立即回收
      2. 最大限度减少程序暂停（实时监听，不会让程序内存用完）

    缺点：
      1. 无法回收循环引用的对象
      2. 时间开销大
*/
const user1 = { age: 1 };
const user2 = { age: 2 };
const user3 = { age: 3 };

const nameList = [user1.age, user2.age, user3.age];

function fn() {
  const num1 = 1;
  const num2 = 2;
}

fn();

// 对象之间的循环引用
function fn1() {
  const obj1 = {};
  const obj2 = {};

  // 对象之间的循环引用，引用计数的GC无法回收
  obj1.name = obj2;
  obj2.name = obj1;

  return "lg is a coder";
}

fn1();
